//
// Created by Administrator on 2021/4/11.
//
/*

给你一个整数 n ，请你找出并返回第 n 个 丑数 。

丑数 就是只包含质因数2、3 和/或5的正整数。

示例 1：

输入：n = 10
输出：12
解释：[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。
示例 2：

输入：n = 1
输出：1
解释：1 通常被视为丑数。


提示：

1 <= n <= 1690

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/ugly-number-ii
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。*/
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class Solution {
public:
    /**
     * 暴力：顺序检查每一个数是不是丑数
     * 简化： 构造  2、3、5三个乘序列
     * */
    int nthUglyNumber(int n) {
        vector<int> container; // 结果容器
        container.push_back(1); // 1是第一个丑数
        int l2 = 0, l3 = 0, l5 = 0;
        int out2, out3, out5, temp;
        for (int i = 1; i < n; ++i) {
            out2 = container[l2] * 2;
            out3 = container[l3] * 3;
            out5 = container[l5] * 5;
            temp = min({out2, out3, out5});
            cout << temp << endl;
            container.push_back(temp);
            if (temp == out2)++l2;
            if (temp == out3)++l3;
            if (temp == out5)++l5;
        }
        return container.back();
    }
};

int main() {
    Solution sol;
    int num;
    while (cin >> num) {
        cout << sol.nthUglyNumber(num) << endl;
    }
    return 0;
}